#!/bin/bash

# 知识图谱应用启动脚本

echo "🚀 启动 Neo4j 知识图谱应用"
echo "================================"

# 检查 Docker 是否安装
if ! command -v docker &> /dev/null; then
    echo "❌ Docker 未安装，请先安装 Docker"
    echo "   下载地址: https://www.docker.com/products/docker-desktop"
    exit 1
fi

# 检查 Docker Compose 是否可用
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
    echo "❌ Docker Compose 未安装或不可用"
    exit 1
fi

echo "📦 启动 Neo4j 数据库..."

# 使用 docker compose 或 docker-compose
if docker compose version &> /dev/null; then
    COMPOSE_CMD="docker compose"
else
    COMPOSE_CMD="docker-compose"
fi

# 启动 Neo4j
$COMPOSE_CMD up -d neo4j

if [ $? -eq 0 ]; then
    echo "✅ Neo4j 容器启动成功"
    echo "⏳ 等待 Neo4j 数据库初始化..."
    
    # 等待 Neo4j 启动完成
    echo "   这可能需要 30-60 秒，请耐心等待..."
    
    # 检查 Neo4j 健康状态
    for i in {1..30}; do
        if docker exec neo4j-knowledge-graph cypher-shell -u neo4j -p password "RETURN 1" &> /dev/null; then
            echo "✅ Neo4j 数据库已就绪"
            break
        fi
        echo "   等待中... ($i/30)"
        sleep 2
    done
    
    if [ $i -eq 30 ]; then
        echo "⚠️  Neo4j 启动超时，但容器已运行，请稍后重试"
    fi
    
    echo ""
    echo "🌐 启动 Web 应用..."
    
    # 启动 Node.js 应用
    npm start &
    APP_PID=$!
    
    echo "✅ 应用启动完成！"
    echo ""
    echo "📋 访问信息:"
    echo "   🌍 Web 应用:     http://localhost:3000"
    echo "   🗄️  Neo4j 浏览器: http://localhost:7474"
    echo "   📊 Neo4j 连接:   bolt://localhost:7687"
    echo "   👤 用户名:       neo4j"
    echo "   🔑 密码:         password"
    echo ""
    echo "💡 使用提示:"
    echo "   1. 访问 http://localhost:3000 开始使用知识图谱"
    echo "   2. 点击 '初始化示例数据' 创建演示数据"
    echo "   3. 使用 Ctrl+C 停止应用"
    echo ""
    echo "🔧 如需停止服务，请运行: ./stop.sh"
    echo ""
    
    # 等待用户中断
    wait $APP_PID
    
else
    echo "❌ Neo4j 启动失败"
    echo "   请检查 Docker 是否正常运行"
    echo "   或手动运行: $COMPOSE_CMD up -d"
    exit 1
fi